package conf

import (
	"beegoProject/global"
	"fmt"
	_ "github.com/go-sql-driver/mysql" //必须手动引入
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"gorm.io/gorm/schema"
	"log"
	"os"
	"time"
)

func init() {
	//sql包中的db连接
	//db, err := sql.Open("mysql", "root:fyx711520@tcp(127.0.0.1:3306)/test?charset=utf8mb4")
	//if err != nil {
	//	fmt.Println("connect DB error !")
	//	log.Fatalln(err)
	//}
	//GlobalDb = db

	//使用orm框架连接

	//orm.RegisterDataBase("default", "mysql", "root:fyx711520@tcp(127.0.0.1:3306)/test?charset=utf8")
	////注册表 new是分配内存
	//orm.RegisterModel(new(models.User), new(models.Video))
	////生成表
	////第一个参数是数据库别名
	////第二个参数是是否强制更新 false表变化很大，就会强制更新，true每次启动项目，就会drop掉，强制更新
	////第三个参数是否可见执行过程
	//orm.RunSyncdb("default", false, true)

	//使用gorm框架查询
	dsn := fmt.Sprintf("root:fyx711520@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local")
	newLogger := logger.New(
		log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
		logger.Config{
			SlowThreshold: time.Second,   // 慢 SQL 阈值
			LogLevel:      logger.Silent, // Log level
			Colorful:      false,         // 禁用彩色打印
		},
	)

	// 全局模式
	var _ error
	global.Db, _ = gorm.Open(mysql.Open(dsn), &gorm.Config{
		NamingStrategy: schema.NamingStrategy{
			SingularTable: true,
		},
		Logger: newLogger,
	})

}
